package com.nenude.corejava.ch10;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SetClass {
	public static void main(String[] args) {
		// set 集合
		// set集合是collection集合的子接口；set集合用于保存无序且唯一的数据

		Computer computer = new Computer("HP", 5000);
		computer = new Computer("HP", 6000);
		Computer computer2 = new Computer("HW", 5500);
		Computer computer3 = new Computer("HW2", 5500);
		// 集合的学习：
		// 学习由哪些集合，每个集合类实现了何哪些数据结构
		// 学习对集合的元素进行增删查改
		Set computersSet = new HashSet();
		computersSet.add(computer);
		computersSet.add(computer2);
		computersSet.add(computer);
		
		//注意：set集合的唯一性，一般指同一条数据(同一个对象)不能被保存两次，而不是指对象内部的数据相同
		//如果需要跟根据元素的数据进行判断，则需要重写equals 方法；
		computersSet.add(computer3);
		System.out.println("set=====>"+computersSet.size());
		
		
		// 集合的遍历
		// 方法1：-推荐使用：迭代接口
		Iterator iterator = computersSet.iterator();
		// 判断集合中是否有下一条数据
		while (iterator.hasNext()) {
			// 取出一条数据，并把指针下移
			Object object = iterator.next();
			Computer comp = (Computer) object;
			System.out.println(comp);
		}
		// 重写tostring方法，才可以看到computer的对象
		// 不然会输出：包名@哈希码 ；所以必须要重写tostring 方法
		//查看集合有几个元素
		//System.out.println(computersSet.size());
		
		//删除元素
		System.out.println("删除元素");
		computersSet.remove(computer2);
		//集合遍历
		iterator = computersSet.iterator();
		while (iterator.hasNext()) {		
			// 取出一条数据，并把指针下移
			Object object = iterator.next();
			
			Computer comp = (Computer) object;
			//对集合中的数据(元素)进行修改,
			comp.setBrand("dell");
			System.out.println(comp);
		}
		System.out.println(computersSet.size());
	     System.out.println(computersSet);
		
	     //查询数据是否在集合中：
	     System.out.println("查询数据是否在集合中：");
		
		if (computersSet.contains(computer2)) {
			System.out.println("数据在集合中");
		}else {
			System.out.println("集合没有保存到集合中");
		}
		
		//修改完成了再修改
		 iterator = computersSet.iterator();
		while (iterator.hasNext()) {
			// 取出一条数据，并把指针下移
			Object object = iterator.next();
			Computer comp = (Computer) object;
			System.out.println(comp);
		}
		
		
	}

}
